package com.aihna.mall.domain.bo;

import com.aihna.common.core.validate.AddGroup;
import com.aihna.common.core.validate.EditGroup;
import com.aihna.common.mybatis.core.domain.BaseEntity;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.util.List;

@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = StoreProductBo.class, reverseConvertGenerate = false)
public class StoreProductInfoBo extends BaseEntity {
    /**
     * 商品ID
     */
    @NotNull(message = "商品ID不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 商品图片
     */
    @NotBlank(message = "商品图片不能为空", groups = { AddGroup.class, EditGroup.class })
    private String image;

    /**
     * 轮播图
     */
    @NotBlank(message = "轮播图不能为空", groups = { AddGroup.class, EditGroup.class })
    private String sliderImage;

    /**
     * 商品名称
     */
    @NotBlank(message = "商品名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String name;

    /**
     * 商品简介
     */
    @NotBlank(message = "商品简介不能为空", groups = { AddGroup.class, EditGroup.class })
    private String info;

    /**
     * 关键字
     */
    @NotBlank(message = "关键字不能为空", groups = { AddGroup.class, EditGroup.class })
    private String keyword;

    /**
     * 商品条码（一维码）
     */
    private String barCode;

    /**
     * 分类id
     */
    @NotBlank(message = "分类id不能为空", groups = { AddGroup.class, EditGroup.class })
    private String cateId;

    /**
     * 商品价格
     */
    private BigDecimal price;

    /**
     * 成本价
     */
    private BigDecimal costPrice;

    /**
     * 市场价
     */
    private BigDecimal otPrice;

    /**
     * 会员价格
     */
    private BigDecimal vipPrice;

    /**
     * 邮费
     */
    private BigDecimal postage;

    /**
     * 单位名
     */
    @NotBlank(message = "单位名不能为空", groups = { AddGroup.class, EditGroup.class })
    private String unitName;

    /**
     * 商品详情
     */
    @NotBlank(message = "商品详情不能为空", groups = { AddGroup.class, EditGroup.class })
    private String description;

    /**
     * 销量
     */
    private Long sales;

    /**
     * 库存
     */
    private Long stock;

    /**
     * 状态（0：未上架，1：上架）
     */
    private Integer isShow;

    /**
     * 是否热卖
     */
    private Integer isHot;

    /**
     * 是否优惠
     */
    private Integer isBenefit;

    /**
     * 是否精品
     */
    private Integer isBest;

    /**
     * 是否新品
     */
    private Integer isNew;

    /**
     * 是否包邮
     */
    private Integer isPostage;

    /**
     * 获得积分
     */
    private Long giveIntegral;

    /**
     * 秒杀状态 0 未开启 1已开启
     */
    private Integer isSeckill;

    /**
     * 砍价状态 0未开启 1开启
     */
    private Integer isBargain;

    /**
     * 是否优品推荐
     */
    private Integer isGood;

    /**
     * 是否单独分佣
     */
    @NotNull(message = "是否单独分佣不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer isSub;

    /**
     * 虚拟销量
     */
    private Long ficti;

    /**
     * 浏览量
     */
    private Long browse;

    /**
     * 商品二维码地址(用户小程序海报)
     */
    private String codePath;

    /**
     * 淘宝京东1688类型
     */
    private String soureLink;

    /**
     * 主图视频链接
     */
    private String videoLink;

    /**
     * 运费模板ID
     */
    private Long tempId;

    /**
     * 规格 0单 1多
     */
    private Integer specType;

    /**
     * 展示图
     */
    private String flatPattern;

    /**
     * 是开启积分兑换
     */
    private Integer isIntegral;

    /**
     * 需要多少积分兑换 只在开启积分兑换时生效
     */
    private Long integral;

    /**
     * 排序
     */
    private Long sort;

    /**
     * 是否回收站
     */
    private Integer isRecycle;

    /**
     * 活动显示排序0=默认, 1=秒杀，2=砍价，3=拼团
     */
    private List<String> activityList;


    private List<StoreProductAttrBo> attr;

    private List<StoreProductAttrValueBo> attrValue;
}
